Jmeter中利用JSONObject和JSONArray的应用

您所在的位置:网站首页 jsonobject import Jmeter中利用JSONObject和JSONArray的应用

Jmeter中利用JSONObject和JSONArray的应用

2023-04-04 00:26| 来源: 网络整理| 查看: 265

I have a problem with the construction of a Json for Amazon Kinesis. This json has to have this format:

我在为Amazon Kinesis构建Json时遇到了一个问题。这个json必须具有以下格式:

{ "Records": [ { "Data": "XzxkYXRhPl8x", "PartitionKey": "partitionKey1" }, { "Data": "f1PxFQo92Afh", "PartitionKey": "partitionKey2" }, { "Data": "Gi4sEdd08HypA", "PartitionKey": "partitionKey3" } ], "StreamName": "exampleStreamName" }

I use an BeanShell Sampler to create the json as a buffer:

我使用BeanShell采样器创建json作为缓冲区:

import org.json.JSONArray; import org.json.JSONObject; //Dichiarazione variabili int timestampValue=(${startTime}+${i}+1); float current_powerValue=${current_power_1}+${__Random(0,10)}; String idValue=${__threadNum}+"_"+"5"; JSONObject part = new JSONObject(); //Create JSON part.put("timestamp",timestampValue); part.put("parent","${__threadNum}"); part.put("id",idValue); part.put("state","on"); part.put("today_kwh",65); part.put("current_power",current_powerValue); part.put("today_on_time",0); part.put("on_for",0); part.put("today_standby_time",0); //ADD json to array if(${i}%(${bufferSize}*${sample}-1)==0 && ${i}!=0 || ${i}==${totalNumber}-${endOfDb}){ //Add to json variable the last json created vars.put("json",vars.get("json")+part.toString()); //Make an JSONObject by json variable of jmeter JSONObject tempArray= new JSONObject(vars.get("json")); log.info(tempArray.toString()); //Add tempArray into JSONArray so that it adds square brackets JSONArray records= new JSONArray(); records.put(tempArray); //Add the second field streamName JSONObject kinesis = new JSONObject(); kinesis.put("records",records); kinesis.put("streamName","kinesis"); //save into jsonBuffer vars.put("jsonBuffer",kinesis.toString()); //restart json variable vars.put("json",""); } else{ //add new json into variable so to store it. vars.put("json", vars.get("json")+part.toString()+","); }

I use json variable in jmeter to save the json for each iteraction and when the "i" variable respect the if clause then I start to create the json structure. So I add the last json to the jmeter variable, then I create a JSONObject to store this json but when i do this it store only one json (because it is an object). Unfortunately if I store in a JSONArray it add "" because read the variable json as a string. The best solution would be use only JSONObject and JSONArray but how I use the same object for all the iteractions(in jmeter i can't use JSONArray) This is my jmx enter image description here

我在jmeter中使用json变量来为每个迭代保存json,当“I”变量尊重if子句时,我开始创建json结构。因此,我将最后一个json添加到jmeter变量中,然后创建一个JSONObject来存储这个json,但是当我这样做时,它只存储一个json(因为它是一个对象)。不幸的是,如果我存储在JSONArray中,它会添加“”,因为将变量json作为字符串读取。最好的解决方案是只使用JSONObject和JSONArray,但是我如何在所有迭代中使用相同的对象(在jmeter中我不能使用JSONArray)这是我的jmx

1 个解决方案 #1

1  

You could trt with this snippet:

你可以参考以下片段:

if(${i}%(${bufferSize}*${sample}-1)==0 && ${i}!=0 || ${i}==${totalNumber}-${endOfDb}){ vars.put("json",vars.get("json")+part.toString()); JSONArray records= new JSONArray("["+vars.get("json")+"]"); log.info(records.toString()); //records.put(tempArray); JSONObject kinesis = new JSONObject(); kinesis.put("records",records); kinesis.put("streamName","kinesis"); vars.put("jsonBuffer",kinesis.toString()); vars.put("json",""); }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3